perm filename GRAPH.SAI[X,ALS]1 blob sn#078548 filedate 1973-12-21 generic text, type T, neo UTF8
00010	BEGIN "GRAPH"
00020	DEFINE ⊂="COMMENT";
00030	DEFINE ⊃="⊂";
00040	DEFINE CR="'15",LF="'12",CRLF="CR&LF",TB="'11";
00050	REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
00060	  INTEGER I,J,K,L,M,X,Y,LX,LY,DX,DY,CHAN5,EOF,PP,POINTP,FLAG,MUTE;
00070	  STRING FILEP,READ; BOOLEAN ER;
00080	  INTEGER ARRAY SAVE[0:5];
00090	  INTEGER ARRAY LFILE[0:127];
00100	  INTEGER ARRAY NEW[0:511];
00110	  INTEGER ARRAY DPYBUF[0:4096];
00120	LABEL STARTP;
00130	
00140	⊂ Allow 1140 units on a line corresponding to 76 charactters @15 units,
00150	   380 segments @ 3 and 48640 samples @ 3/128 unit, or 2.432 seconds;
00160	
00170	STARTP:
00180	OUTSTR("Set MUTE level (CR for 55) ");
00190	IF (READ←INCHWL)="" THEN MUTE←55 ELSE MUTE←CVD(READ);
00200	OUTSTR("First file number (CR for 1) ");
00210	IF (READ←INCHWL)="" THEN PP←1 ELSE PP←CVD(READ);
00220	FILEP←"SEG"&CVS(PP)&".SYN[SYN,ALS]";
00230	
00240	CLOSE(CHAN5); OPEN(CHAN5,"DSK",'10,2,0,0,0,EOF);
00250	LOOKUP(CHAN5,FILEP,ER);
00260	IF ER THEN OUTSTR("FILE "&FILEP&"  NOT FOUND"&CRLF);
00270	ARRYIN(CHAN5,LFILE[0],'200);
00280	
00290	DPYSET(DPYBUF); SETFORMAT(2,0); AIVECT(-560,-70);
00300	⊂ Vertical numbers and vertical scale;
00310	FOR K←1 STEP 1 UNTIL 2 DO BEGIN
00320	FOR I←0 STEP 1 UNTIL 5 DO BEGIN
00330	  RIVECT(-35,-7); DPYSST(CVS(I)); RIVECT(25,7);
00340	  RVECT(-20,0);
00350	  IF I=5 THEN DONE;
00360	
00370	  RVECT(0,10);
00380	  FOR J←1 STEP 1 UNTIL 4 DO BEGIN
00390	  RIVECT(10,0); RVECT(-10,0);RVECT(0,10); END;
00400	  END;
00410	RIVECT(0,-250); RVECT(570,0); RVECT(570,0);
00420	AIVECT(-560,-460); END;
00430	⊃ DPYOUT(0);
00440	
00450	FLAG←0; AIVECT(-560,-100);
00460	FOR I←21 STEP 1 UNTIL 127 DO BEGIN "PONY"
00470	  IF LFILE[I]=0 THEN DONE;
00480	  L←LFILE[I] LAND '777760000000;
00490	  J←LDB(POINT(14,LFILE[I],27)); K←LDB(POINT(8,LFILE[I],35));
00500	
00510	  IF X<J%5 THEN FOR M←X STEP 1 UNTIL J%5 DO BEGIN
00520	    DPYSST(" "); X←X+1;
00530	    IF X≥76 THEN IF FLAG=0 THEN BEGIN FLAG←1;
00540	      RIVECT(-570,-390); RIVECT(-570,0); END;
00550	    IF X≥152 THEN DONE "PONY";
00560	    END;
00570	  IF K<5 THEN K←5;
00580	  FOR M←1 STEP 1 UNTIL K%5 DO BEGIN
00590	    DPYSST(CVSTR(L)[1 TO 1]); IF (READ←CVSTR(L)[2 TO 2])≠"" THEN BEGIN
00600	      RIVECT(-15,-20); DPYSST(READ); RIVECT(0,20); END;
00610	     X←X+1;
00620	    IF X≥76 THEN IF FLAG=0 THEN BEGIN FLAG←1;
00630	      RIVECT(-570,-390); RIVECT(-570,0); END;
00640	    IF X≥152 THEN DONE "PONY";
00650	    END;
00660	  END "PONY";
00670	⊃ DPYOUT(0);
00680	
00690	FLAG←0; AIVECT(0,-70);
00700	
00710	FOR I←0 STEP 1 UNTIL 5 DO SAVE[I]←0;
00720	WHILE EOF=0 DO BEGIN "DATIN"
00730	  ARRYIN(CHAN5,NEW[0],512);
00740	
00750	  FOR I←1 STEP 1 UNTIL 3 DO BEGIN "PLOT"
00760	    LY←SAVE[I]; LX←SAVE[0]; RIVECT(LX-560,LY);
00770	    FOR J←0 STEP 8 UNTIL 511 DO BEGIN
00780	      X←(NEW[J] LSH -15)*3%128;
00790	      IF FLAG=2 THEN BEGIN X←X-1140; IF X>1140 THEN DONE; END;
00800	      IF LX≥1140 THEN BEGIN
00810	        IF FLAG=0 THEN BEGIN
00820	          FLAG←1; RIVECT(-570,-390);  RIVECT(-570,0); END;
00830	        END;
00840	
00850	      POINTP←POINT(9,NEW[J+1],-1);
00860	      FOR K←1 STEP 1 UNTIL I DO IBP(POINTP);
00870	      Y← LDB(POINTP)*3;
00880	⊃  OUTSTR(CVS(X)&","&CVS(Y)&TB&TB);
00890	      DX←X-LX; LX←X; DY←Y-LY; LY←Y;
00900	      IF X=0 THEN IF J≠0 THEN BEGIN RIVECT(DX,DY); DONE; END;
00910	IF LDB(POINT(9,NEW[J+2],17)) < MUTE THEN RIVECT(DX,DY) ELSE
00920	      RVECT(DX,DY); END;
00930	    IF FLAG=1 THEN BEGIN
00940	      FLAG←0; RIVECT(570,390); RIVECT(570,0); END;
00950	    SAVE[I]←LY; RIVECT(560-LX,-LY);
00960	    END "PLOT";
00970	  IF X=0 THEN DONE "DATIN";
00980	  IF FLAG=2 THEN IF X>1140 THEN DONE "DATIN";
00990	
01000	  IF LX≥1140 THEN BEGIN FLAG←2;
01010	    RIVECT(0,-390); LX←LX-1140; END;
01020	  SAVE[0]←LX;
01030	  END "DATIN";
01040	CLOSE(CHAN5);
01050	TYPLOC(512,300); DPYOUT(0);INCHWL;
01060	GOTO STARTP;
01070	END "GRAPH";